import re

def is_phone(phone):
    phone_pat = re.compile('^(13\d|14[5|7]|15\d|166|17[3|6|7]|18\d)\d{8}$')
    res = re.search(phone_pat, phone)
    if not res:
        return False
    return True


import re

def main(names):

    names = ["name1", "_name", "2_name", "__name__", "name！123", "nameA", "nameZZ", "name$123"]

    for name in names:
        # ret = re.match(r"[a-zA-Z_][a-zA-Z0-9_]*", name)
        ret = re.match(r"^[a-zA-Z_][a-zA-Z0-9_]*$", name)
        if ret:
            print("变量名 %s 符合要求匹配出来的是%s" % (name, ret.group()))

        else:
            print("变量名 %s 不符合要求" % name)


    
def verify_name(name):

    RE_CHINESE = re.compile(r'^[\u4e00-\u9fa5]{1,8}$')

    result_name = re.compile(r"^[a-zA-Z]\w{6,18}")

    if RE_CHINESE.findall(name):
        
        return True

    elif result_name.match(name):

        return True

    else:

        return False

def register_name(name):

    if len(name) >= 20:

        return False

    if verify_name(name):

        return True
    else:
        return False

if __name__ == '__main__':

    # print(ip_name('ssssssssssssssssssss'))

    pass


# m=<_sre.SRE_Match object at 0x010EE218>


    # print(main('liuliwei'))
    # print(main('56345345'))
    # print(main('刘李伟'))
    
# 匹配字符串：
# .  匹配任意1个字符（除了\n）
# [ ]    匹配[ ]中列举的字符
# \d 匹配数字，即0-9
# \D 匹配非数字，即不是数字
# \s 匹配空白，即 空格，tab键
# \S 匹配非空白
# \w 匹配单词字符，即a-z、A-Z、0-9、_
# \W 匹配非单词字符
# 匹配多个字符：
# *  匹配前一个字符出现0次或者无限次，即可有可无
# +  匹配前一个字符出现1次或者无限次，即至少有1次
# ?  匹配前一个字符出现1次或者0次，即要么有1次，要么没有
# {m}    匹配前一个字符出现m次
# {m,n}  匹配前一个字符出现从m到n次
# 匹配开通结尾：
# ^  匹配字符串开头
# $  匹配字符串结尾
